The present invention relates to a computer system and, more particularly, to a computer system which can boot and reboot quickly and its bootup method.
A computer system comprises at least a CPU (Central Processing Unit), main memory, and nonvolatile memory medium. The main memory is used to hold a program to be interpreted by the CPU and a temporary processing result. The nonvolatile memory medium is a storage medium which can hold contents in the absence of power. A program is stored in this medium. A programmable nonvolatile memory medium can store data (information) which needs to be stored.
Such nonvolatile memory media include read-only type media such as a ROM and CD-ROM and writable type media such as a magnetic disk medium (hard disk, flexible disk (registered trademark), or the like), flash memory, EPROM (Erasable and Programmable ROM), and EEPROM (Electrically Erasable Programmable ROM). This programmable nonvolatile memory medium can be used as a main memory.
When the computer system is to be booted, the following processes are sequentially executed. The hardware is initialized first. An operating system (to be referred to as an OS hereinafter) is then booted. Finally, one or more necessary application programs are booted. Note the term “boot” refers to the process of starting or resetting a computer.
When the OS and application programs are to be booted, such programs are loaded from the nonvolatile memory medium. Subsequently, the initialization processing described in the program is the executed. After this initialization processing, an operation process as the intended purpose of the program can be performed.
At this time, the same operation is done every time initialization of the system is performed unless the setting or arrangement of the hardware, OS, or program is changed. Therefore, the contents of the main memory immediately after every bootup remain almost the same. In this case, the contents of the main memory can be functionally classified into a read-only program area and a data area for read/write operation. The program area is loaded from the nonvolatile memory medium and is also used for read-only operation on the main memory. The data area is temporarily used in the execution of a program and allows both read and write operations on the main memory.
The bootup time taken for this initialization processing increases with an increase in software size. Conventionally, therefore, in order to shorten the bootup time, the contents of the main memory immediately after initialization processing (to be referred to as a bootup-memory-image hereinafter) are stored in an area other than the area to be normally used, and the bootup-memory-image immediately after bootup is loaded into the main memory without any change at the time of bootup, thereby booting the system.
Such a conventional high-speed bootup technique is disclosed in Japanese Patent Laid-Open No. 03-278126 (prior art reference 1). The scheme disclosed in this reference includes a backup memory means or a disk file means for backup. A bootup-memory-image immediately after bootup is stored in the memory means or disk file means. At the time of bootup or reboot, memory copy is continuously performed from the memory means or disk file means to the main memory. When the bootup-memory-image is completely copied onto the main memory, the system can be operated. Prior art reference 1 also discloses a method of creating a bootup-memory-image immediately after bootup.
Another conventional high-speed bootup method is disclosed in Japanese Patent Laid-Open No. 10-293682 (prior art reference 2). The scheme disclosed in this reference executes reboot from a copy of the bootup-memory-image immediately after bootup which is stored in the main memory. Note, however, that immediately after reboot, memory copy is continuously performed to create a copy on the main memory again, and the system can be operated afterward.
Still another conventional high-speed bootup method is disclosed in Japanese Patent Laid-Open No. 09-146774 (prior art reference 3). According to the scheme disclosed in this reference, a main memory device is comprised of a readable/writable nonvolatile memory unit and a volatile storage unit, and system programs such as a bootup OS and other application programs are stored in the nonvolatile memory unit. Data that need to be rewritten at the time of program execution, e.g., variables and data for processing, are stored in an external storage device without being stored in the nonvolatile memory unit. When the system is to be booted, data such as variables are loaded from the external memory device into the volatile unit, and the CPU directly executes system programs such as the bootup OS from the nonvolatile memory unit, thereby booting the system.
The first problem is that memory copy of the bootup-memory-image immediately after bootup and data that need to be rewritten continuously occurs at the time of bootup, and a long halt time exists before the operation of the system can be booted for the following reasons. According to prior art reference 1, the operation of the system cannot be booted until all the bootup-memory-image immediately after bootup which is stored in the nonvolatile memory medium is copied to the main memory. According to prior art reference 2, the operation of the system cannot be booted until the bootup-memory-image immediately after bootup which is stored in the main memory for the next reboot is completely copied to be reconstructed again. According to prior art reference 3, the operation of the system cannot be booted until data that need to be rewritten are completely loaded from the external storage device into the main memory.
The second problem is that the readable/writable main memory area is wasted for the following reason. Both read-only data and read/write data on the nonvolatile memory are copied to the main memory. As a result, even the read-only data is held in the readable/writable main memory area in spite of the fact that the main memory area allows both read and write accesses. This reduces the capacity for write data.